Перейти к основному содержимому

Описание

Резервирование сервера приложений реализовано в виде кластера серверов. Конфигурирование кластера серверов осуществляется посредством указания приоритета каждого сервера (настройка Cluster:Priority) и адреса других серверов (настройка Cluster:ServersAddresses) в файле technodoc.settings.ini.

В Системе в одно и то же время может быть только один основной сервер и неограниченное количество резервных серверов. При запуске Системы, сервер запрашивает приоритеты других серверов и, если его приоритет больше приоритета любого другого сервера в кластере, он становится основным, иначе – резервным.

При работе сервера в качестве основного, настройки Системы загружаются из основной секции файла technodoc.settings.json. При работе сервера в качестве резервного сервера настройки Системы загружаются из секции Standby. Предполагается, что большая часть периодических задач (задача по созданию, обновлению, отправке отчетов по почте и др.) будут работать только на основном сервере, на резервном сервере они будут отключены. Таким образом, при работе Системы в качестве кластера серверов, каждый из которых взаимодействует с одной и той же базой данных, целостность данных не будет нарушена. Пользователь может работать с Системой как при помощи основного сервера, так и при помощи резервного. Однако, в случае подключения к резервному серверу все операции, связанные с обновлением данных, будут запрещены.

Кластер серверов

Кластер серверов

Чтобы указать, что определенная настройка должна примениться только в том случае если сервер работает в качестве резервного, необходимо перед ней добавить префикс Standby. Например, для отключения всех периодических задач, в том случае, если сервер работает в качестве резервного, необходимо в конфигурационном файле technodoc.settings.ini, в секции [JobScheduler] раскомментировать строку IsEnabled=false.

В случае отключения основного сервера, другие сервера в кластере определяют, кто возьмет на себя роль нового основного сервера. Определение основного сервера происходит за счет сравнения приоритетов серверов. Сервер с наивысшим значением приоритета из оставшихся становится основным.

Важно заметить, что в случае аварийного переключения, сервер, который стал основным, повышает свой приоритет на значение, равное количеству секунд, прошедших с 1 января 1970 года. Соответственно, после того, как резервный сервер стал основным, обратного переключения не произойдет до тех пор, пока он корректно функционирует. Определение нового основного сервера будет произведено при следующем расчете статуса всех серверов в кластере. Период расчета статуса сервера задается при помощи настройки PollingRate секции Cluster в файле technodoc.settings.ini.

Переключение приложения с основного сервера на резервный

Переключение приложения с основного сервера на резервный

При работе на резервном сервере есть 2 варианта работы:

  • Все запросы на изменение данных запрещаются.
  • Все отличные от GET запросы к резервным серверам перенаправляются на основной сервер.

Данное поведение настраивается с помощью настройки RequestHandleType секции Cluster в файле technodoc.settings.ini, которая может принимать следующие значения:

  • Forbid - все запросы на изменение данных к резервным серверам отклоняются (вариант по умолчанию).
  • RedirectToPrimary - все отличные от GET запросы к резервным серверам перенаправляются на основной сервер.
Режим RedirectToPrimary

В некоторых браузерах установлены политики безопасности, которые в настоящий момент не позволяют корректно выполнять перенаправление запросов. В будущих версиях данный момент будет исправлен. При этом перенаправление запросов по умолчанию работает во встроенном браузере КАСКАД.

В случае выполнения аварийного переключения пользователь будет видеть информационное окно.

Информационное окно о возникшем аварийном переключении

Информационное окно о возникшем аварийном переключении